//#define _CRT_SECURE_NO_WARNINGS 1
//
//#include <iostream>
//
//using namespace std;
//
//class A {
//public:
//	A(const char* s)
//	{ 
//		cout << s << endl; 
//	}
//};
//
//class B : virtual public A
//{
//public:
//	B(const char* s1, const char* s2) 
//		:A(s1)
//	{ 
//		cout << s2 << endl; 
//	}
//};
//
//class C : virtual public A
//{
//public:
//	C(const char* s1, const char* s2) 
//		:A(s1)
//	{ 
//		cout << s2 << endl; 
//	}
//};
//
//class D : public B, public C
//{
//public:
//	D(const char* s1, const char* s2, const char* s3, const char* s4) 
//		: B(s1, s2)
//		, C(s1, s3)
//		, A(s1)
//	{
//		cout << s4 << endl;
//	}
//};
//
//int main() 
//{
//	D* p = new D("class A", "class B", "class C", "class D");
//
//	//D d("class A", "class B", "class C", "class D");
//	//D* pd = &d;
//	//B* pb = &d;
//	//C* pc = &d;
//	//A* pa = &d;
//
//	delete p;
//	return 0;
//}
//
//class BB : public B
//{
//public:
//	BB(const char* s1, const char* s2)
//		:B(s1, s2), A(s1)
//	{
//		cout << s2 << endl;
//	}
//};
//
//class CC : public C
//{
//public:
//	CC(const char* s1, const char* s2)
//		:C(s1, s2), A(s1)
//	{
//		cout << s2 << endl;
//	}
//};